<?php
/**
 * Image
 * Created by Veyron
 * motto:现在的拼搏 为了更好的明天
 * day:  2020/2/8
 * Time: 21:02
 */

namespace app\admin\controller;

class Image extends AdminBase
{
    /**
     * 图片上传
     * @return \think\response\Json
     */
    public function upload(){
        if(!$this->request->isPost()){
            return show(config('status.error'),'请求不合法');
        }
        $file = $this->request->file('file');
        //注意事项：
        //1、上传图片格式 png jpg gif；2、上传图片大小 <600k；3、尺寸验证(根据需要)
        //图片上传验证(filesize<600kb)
        $imagesVaildate = new \app\admin\validate\Image();

        if(!$imagesVaildate->check(['file'=>$file])){
            return show(config('status.error'),$imagesVaildate->getError());
        }

        //上传到默认目录 \runtime\storage\upload (upload 即 putFile第一个参数)
//        $filename = \think\facade\Filesystem::putFile('upload',$file);
        //上传到自定义目录(disk指定)
        // 可在 配置文件 filesystem.php disk配置(public 键下面的值设置默认目录)
        $filename = \think\facade\Filesystem::disk('public')->putFile('image',$file);
        if(!$filename){
            return show(config('status.error'),'图片上传失败');
        }

        $imgUrl = [
            'image' => '/upload/'.$filename
        ];
        return show(config('status.success'),'图片上传成功', $imgUrl);
    }
    /**
     * layedit编辑器辑器图片上传
     */
    public function layUpload(){
        if(!$this->request->isPost()){
            return show(config('status.error'),'请求不合法');
        }
        $file = $this->request->file('file');

        $imagesVaildate = new \app\admin\validate\Image();

        if(!$imagesVaildate->check(['file'=>$file])){
            return json(['code'=>1,'msg'=>$imagesVaildate->getError(),'data'=>[]],200);
        }

        $filename = \think\facade\Filesystem::disk('public')->putFile('image',$file);
        if(!$filename){
            return json(['code'=>1,'msg'=>'图片上传失败','data'=>[]],200);
        }

        $result = [
            'code' => 0,
            'data' => [
                'src' => '/upload/'.$filename
            ]
        ];
        return json($result,200);
    }
}
